Home
My Acurite new hub issues
- Details
If you had the older hub that reported your sensor(s) data they are requiring you to get a new hub (at a discount) to support new technology. They say they have out grown their infrastructure ability to handle the all the hubs plus the new hub will offer better services. Maybe the new hub will handle devices better in the future and will be a good thing but forcing customer to pay for a new hub because you don't want to support the hundreds of thousands of hubs you have sold is pretty crappy. I am software engineer and system architect and have have been working in the field 30+ years. I call BS and this is just a money grab to make up for short falls on lack of their planning.
I decided to play along. I have 6 sensors around the house and a 5-1 weather station and just got this fancy new hub that looks like Google Home speaker. Now I plugged in the new hub and all my device show...
as.... Temp & Humidity Sensor-6
Temp & Humidity Sensor-5
Temp & Humidity Sensor-4
Temp & Humidity Sensor-3
Temp & Humidity Sensor-2
Temp & Humidity Sensor-1
WTH....
You guys didn't think to make it so when a new hub is added to see if you wanted to add the old sensors name to it.
Any upgrade option in the portal you could run would be a good idea. You can even have the web interface see if any sensor has the same sensor id. Would have took any good programmer maybe 1 day to write.
Here is something they code do: Put the sensor Identifier on the damn sensor.. If you go on your network and get the IP address of you new or old hub you can browse to it. you will see a nice list of sensors. it looks like this:
# | Type | Id | Last Time (UTC) | Signal | Battery |
0 | tower | 00011180 | 2018-02-28T22:50:39 | 4 | Normal |
1 | tower | 00014066 | 2018-02-28T22:50:35 | 4 | Normal |
2 | 5N1 | 00002048 | 2018-02-28T22:50:29 | 4 | Normal |
3 | tower | 00008041 | 2018-02-28T22:50:24 | 4 | Normal |
4 | tower | 00010030 | 2018-02-28T22:50:30 | 4 | Normal |
6 | tower | 00010601 | 2018-02-28T22:50:36 | 4 | Normal |
If they showed the sensor ID on myacurite.com I could mach them and not have to play the which sensor is which game. When I first got all my sensors I turned one on at a time and labeled them with the ID using a sharpie as they registered on the hub..
Sample config for ejabberd process-one.net Ldap login Ldap vcards
- Details
### ###' ejabberd configuration file ### ### ### The parameters used in this configuration file are explained in more detail ### in the ejabberd Installation and Operation Guide. ### Please consult the Guide in case of doubts, it is included with ### your copy of ejabberd, and is also available online at ### http://www.process-one.net/en/ejabberd/docs/ ### The configuration file is written in YAML. ### Refer to http://en.wikipedia.org/wiki/YAML for the brief description. ### However, ejabberd treats different literals as different types: ### ### - unquoted or single-quoted strings. They are called "atoms". ### Example: dog, 'Jupiter', '3.14159', YELLOW ### ### - numeric literals. Example: 3, -45.0, .0 ### ### - quoted or folded strings. ### Examples of quoted string: "Lizzard", "orange". ### Example of folded string: ### > Art thou not Romeo, ### and a Montague? ###. ======= ###' LOGGING ## ## loglevel: Verbosity of log files generated by ejabberd. ## 0: No ejabberd log at all (not recommended) ## 1: Critical ## 2: Error ## 3: Warning ## 4: Info ## 5: Debug ## loglevel: 4 ## ## rotation: Disable ejabberd's internal log rotation, as the Debian package ## uses logrotate(8). log_rotate_size: 0 log_rotate_date: "" ## ## overload protection: If you want to limit the number of messages per second ## allowed from error_logger, which is a good idea if you want to avoid a flood ## of messages when system is overloaded, you can set a limit. ## 100 is ejabberd's default. log_rate_limit: 100 ## ## watchdog_admins: Only useful for developers: if an ejabberd process ## consumes a lot of memory, send live notifications to these XMPP ## accounts. ## ## watchdog_admins: ## - "REF: https://www.process-one.net/en/ejabberd/#getejabberdThis email address is being protected from spambots. You need JavaScript enabled to view it. " ###. =============== ###' NODE PARAMETERS ## ## net_ticktime: Specifies net_kernel tick time in seconds. This options must have ## identical value on all nodes, and in most cases shouldn't be changed at all from ## default value. ## ## net_ticktime: 60 ###. ================ ###' SERVED HOSTNAMES ## ## hosts: Domains served by ejabberd. ## You can define one or several, for example: ## hosts: ## - "example.net" ## - "example.com" ## - "example.org" ## hosts: - "localhost" - "chat" ## ## route_subdomains: Delegate subdomains to other XMPP servers. ## For example, if this ejabberd serves example.org and you want ## to allow communication with an XMPP server called im.example.org. ## ## route_subdomains: s2s ###. =============== ###' LISTENING PORTS ## ## listen: The ports ejabberd will listen on, which service each is handled ## by and what options to start it with. ## listen: - port: 5222 ip: "::" module: ejabberd_c2s ## ## If TLS is compiled in and you installed a SSL ## certificate, specify the full path to the ## file and uncomment these lines: ## certfile: "/etc/ejabberd/ejabberd.pem" starttls: true ## ## To enforce TLS encryption for client connections, ## use this instead of the "starttls" option: ## ## starttls_required: true ## ## Custom OpenSSL options ## protocol_options: - "no_sslv3" ## - "no_tlsv1" max_stanza_size: 65536 shaper: c2s_shaper access: c2s zlib: true resend_on_timeout: if_offline - port: 5269 ip: "::" module: ejabberd_s2s_in ## ## ejabberd_service: Interact with external components (transports, ...) ## ## - ## port: 8888 ## module: ejabberd_service ## access: all ## shaper_rule: fast ## ip: "127.0.0.1" ## hosts: ## "icq.example.org": ## password: "secret" ## "sms.example.org": ## password: "secret" ## ## ejabberd_stun: Handles STUN Binding requests ## ## - ## port: 3478 ## transport: udp ## module: ejabberd_stun ## ## To handle XML-RPC requests that provide admin credentials: ## ## - ## port: 4560 ## module: ejabberd_xmlrpc ## access_commands: {} - port: 5280 ip: "::" module: ejabberd_http request_handlers: "/websocket": ejabberd_http_ws ## "/pub/archive": mod_http_fileserver web_admin: true http_bind: true ## register: true mydomaintcha: true tls: false certfile: "/etc/ejabberd/ejabberd.pem" ## Disabling digest-md5 SASL authentication. digest-md5 requires plain-text ## password storage (see auth_password_format option). disable_sasl_mechanisms: "digest-md5" ###. ================== ###' S2S GLOBAL OPTIONS ## ## s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections. ## Allowed values are: false optional required required_trusted ## You must specify a certificate file. ## s2s_use_starttls: optional ## ## s2s_certfile: Specify a certificate file. ## s2s_certfile: "/etc/ejabberd/ejabberd.pem" ## Custom OpenSSL options ## s2s_protocol_options: - "no_sslv3" ## - "no_tlsv1" ## ## domain_certfile: Specify a different certificate for each served hostname. ## ## host_config: ## "example.org": ## domain_certfile: "/path/to/example_org.pem" ## "example.com": ## domain_certfile: "/path/to/example_com.pem" ## ## S2S whitelist or blacklist ## ## Default s2s policy for undefined hosts. ## ## s2s_access: s2s ## ## Outgoing S2S options ## ## Preferred address families (which to try first) and connect timeout ## in milliseconds. ## ## outgoing_s2s_families: ## - ipv4 ## - ipv6 ## outgoing_s2s_timeout: 10000 ###. ============== ###' AUTHENTICATION ## ## auth_method: Method used to authenticate the users. ## The default method is the internal. ## If you want to use a different method, ## comment this line and enable the correct ones. ## ##auth_method: internal ## ## Store the plain passwords or hashed for SCRAM: ## auth_password_format: plain ##auth_password_format: scram ## ## Define the FQDN if ejabberd doesn't detect it: ## fqdn: "server3.example.com" ## ## Authentication using external script ## Make sure the script is executable by ejabberd. ## ## auth_method: external ## extauth_program: "/path/to/authentication/script" ## ## Authentication using ODBC ## Remember to setup a database in the next section. ## ## auth_method: odbc ## ## Authentication using PAM ## ## auth_method: pam ## pam_service: "pamservicename" ## ## Authentication using LDAP ## ##auth_method: ldap ## ## List of LDAP servers: ##ldap_servers: ## - "192.168.5.55" ## - "192.168.5.56" ## ## Encryption of connection to LDAP servers: ##ldap_encrypt: none ##ldap_encrypt: tls ## ## Port to connect to on LDAP servers: ##ldap_port: 389 ##ldap_port: 636 ## ## LDAP manager: ##ldap_rootdn: "CN=LDAP Service,OU=mydomain Users,DC=mydomain,DC=local" ##ldap_rootdn: "CN=LDAP Service" ## ## Password of LDAP manager: ##ldap_password: "M@na93d4DAcc0unt" ## ## Search base of LDAP directory: ## ldap_base: "OU=mydomain Users" ## ## LDAP attribute that holds user ID: ##ldap_uids: ## - "sAMAccountName": "%u" ## ## LDAP filter: ##ldap_filter: "(memberOf=*)" auth_method: [ldap] ldap_servers: - "192.168.1.2" - "192.168.1.3" ldap_base: "OU=mydomain Users,DC=mydomain,DC=local" ldap_rootdn: "CN=LDAP Service,OU=mydomain Users,DC=mydomain,DC=local" ldap_password: "AcPassw0rd!" ldap_uids: ["sAMAccountName"] ldap_filter: "(memberOf=*)" ## ## Anonymous login support: ## auth_method: anonymous ## anonymous_protocol: sasl_anon | login_anon | both ## allow_multiple_connections: true | false ## ## host_config: ## "public.example.org": ## auth_method: anonymous ## allow_multiple_connections: false ## anonymous_protocol: sasl_anon ## ## To use both anonymous and internal authentication: ## ## host_config: ## "public.example.org": ## auth_method: ## - internal ## - anonymous ###. ============== ###' DATABASE SETUP ## ejabberd by default uses the internal Mnesia database, ## so you do not necessarily need this section. ## This section provides configuration examples in case ## you want to use other database backends. ## Please consult the ejabberd Guide for details on database creation. ## ## MySQL server: ## ## odbc_type: mysql ## odbc_server: "server" ## odbc_database: "database" ## odbc_username: "username" ## odbc_password: "password" ## ## If you want to specify the port: ## odbc_port: 1234 ## ## PostgreSQL server: ## ## odbc_type: pgsql ## odbc_server: "server" ## odbc_database: "database" ## odbc_username: "username" ## odbc_password: "password" ## ## If you want to specify the port: ## odbc_port: 1234 ## ## If you use PostgreSQL, have a large database, and need a ## faster but inexact replacement for "select count(*) from users" ## ## pgsql_users_number_estimate: true ## ## SQLite: ## ## odbc_type: sqlite ## odbc_database: "/path/to/database.db" ## ## ODBC compatible or MSSQL server: ## ## odbc_type: odbc ## odbc_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd" ## ## Number of connections to open to the database for each virtual host ## ## odbc_pool_size: 10 ## ## Interval to make a dummy SQL request to keep the connections to the ## database alive. Specify in seconds: for example 28800 means 8 hours ## ## odbc_keepalive_interval: undefined ###. =============== ###' TRAFFIC SHAPERS shaper: ## ## The "normal" shaper limits traffic speed to 1000 B/s ## normal: 1000 ## ## The "fast" shaper limits traffic speed to 50000 B/s ## fast: 50000 ## ## This option specifies the maximum number of elements in the queue ## of the FSM. Refer to the documentation for details. ## max_fsm_queue: 1000 ###. ==================== ###' ACCESS CONTROL LISTS acl: ## ## The 'admin' ACL grants administrative privileges to XMPP accounts. ## You can put here as many accounts as you want. ## admin: user: - "": "localhost" user: - "mell": "chat" user: - "admin": "chat" ## ## Blocked users ## ## blocked: ## user: ## - "baduser": "example.org" ## - "test" ## Local users: don't modify this. ## local: user_regexp: "" ## ## More examples of ACLs ## ## jabberorg: ## server: ## - "jabber.org" ## aleksey: ## user: ## - "aleksey": "jabber.ru" ## test: ## user_regexp: "^test" ## user_glob: "test*" ## ## Loopback network ## loopback: ip: - "127.0.0.0/8" ## ## Bad XMPP servers ## ## bad_servers: ## server: ## - "xmpp.zombie.org" ## - "xmpp.spam.com" ## ## Define specific ACLs in a virtual host. ## ## host_config: ## "localhost": ## acl: ## admin: ## user: ## - "bob-local": "localhost" ###. ============ ###' ACCESS RULES access: ## Maximum number of simultaneous sessions allowed for a single user: max_user_sessions: all: 10 ## Maximum number of offline messages that users can have: max_user_offline_messages: admin: 5000 all: 100 ## This rule allows access only for local users: local: local: allow ## Only non-blocked users can use c2s connections: c2s: blocked: deny all: allow ## For C2S connections, all users except admins use the "normal" shaper c2s_shaper: admin: none all: normal ## All S2S connections use the "fast" shaper s2s_shaper: all: fast ## Only admins can send announcement messages: announce: admin: allow ## Only admins can use the configuration interface: configure: admin: allow ## Admins of this server are also admins of the MUC service: muc_admin: admin: allow ## Only accounts of the local ejabberd server can create rooms: muc_create: local: allow ## All users are allowed to use the MUC service: muc: all: allow ## Only accounts on the local ejabberd server can create Pubsub nodes: pubsub_createnode: local: allow ## In-band registration allows registration of any possible username. ## To disable in-band registration, replace 'allow' with 'deny'. register: all: allow ## Only allow to register from localhost trusted_network: loopback: allow ## Do not establish S2S connections with bad servers ## s2s: ## bad_servers: deny ## all: allow ## By default the frequency of account registrations from the same IP ## is limited to 1 account every 10 minutes. To disable, specify: infinity ## registration_timeout: 600 ## ## Define specific Access Rules in a virtual host. ## ## host_config: ## "localhost": ## access: ## c2s: ## admin: allow ## all: deny ## register: ## all: deny ###. ================ ###' DEFAULT LANGUAGE ## ## language: Default language used for server messages. ## language: "en" ## ## Set a different default language in a virtual host. ## ## host_config: ## "localhost": ## language: "ru" ###. ======= ###' mydomainTCHA ## ## Full path to a script that generates the image. ## ## mydomaintcha_cmd: "/usr/share/ejabberd/mydomaintcha.sh" ## ## Host for the URL and port where ejabberd listens for mydomainTCHA requests. ## ## mydomaintcha_host: "example.org:5280" ## ## Limit mydomainTCHA calls per minute for JID/IP to avoid DoS. ## ## mydomaintcha_limit: 5 ###. ======= ###' MODULES ## ## Modules enabled in all ejabberd virtual hosts. ## modules: mod_adhoc: {} mod_admin_extra: {} mod_announce: # recommends mod_adhoc access: announce mod_blocking: {} # requires mod_privacy mod_mydomains: {} mod_carboncopy: {} mod_client_state: {} mod_configure: {} # requires mod_adhoc mod_disco: {} mod_echo: {} mod_irc: {} mod_http_bind: {} ## mod_http_fileserver: ## docroot: "/var/www" ## accesslog: "/var/log/ejabberd/access.log" mod_last: {} mod_muc: ## host: "conference.@HOST@" access: muc access_create: muc_create access_persistent: muc_create access_admin: muc_admin ## mod_muc_log: {} mod_muc_admin: {} ## mod_multicast: {} mod_offline: access_max_user_messages: max_user_offline_messages mod_ping: {} ## mod_pres_counter: ## count: 5 ## interval: 60 mod_privacy: {} mod_private: {} ## mod_proxy65: {} mod_pubsub: access_createnode: pubsub_createnode ## reduces resource comsumption, but XEP incompliant ignore_pep_from_offline: true ## XEP compliant, but increases resource comsumption ## ignore_pep_from_offline: false last_item_cache: false plugins: - "flat" - "hometree" - "pep" # pep requires mod_mydomains mod_register: ## ## Protect In-Band account registrations with mydomainTCHA. ## ## mydomaintcha_protected: true ## ## Set the minimum informational entropy for passwords. ## ## password_strength: 32 ## ## After successful registration, the user receives ## a message with this subject and body. ## welcome_message: subject: "Welcome!" body: |- Hi. Welcome to this XMPP server. ## ## When a user registers, send a notification to ## these XMPP accounts. ## ## registration_watchers: ## - "This email address is being protected from spambots. You need JavaScript enabled to view it. " ## ## Only clients in the server machine can register accounts ## ip_access: trusted_network ## ## Local c2s or remote s2s users cannot register accounts ## ## access_from: deny access: register mod_roster: {} mod_shared_roster: {} mod_stats: {} mod_time: {} mod_vcard: search: false mod_vcard_ldap: ldap_rootdn: "CN=LDAP Service,OU=mydomain Users,DC=mydomain,DC=local" ldap_password: "AcPassw0rd!" ldap_base: "OU=mydomain Users,DC=mydomain,DC=local" ldap_uids: "userPrincipalName": "%This email address is being protected from spambots. You need JavaScript enabled to view it. " ldap_vcard_map: "FN": {"%s": ["displayName"]} "EMAIL": {"%This email address is being protected from spambots. You need JavaScript enabled to view it. ": ["sAMAccountName"]} "TITLE": {"%s": ["title"]} "DESC": {"%s": ["description"]} "TEL": {"%s": ["telephoneNumber"]} "PHOTO": {"%s": ["jpegPhoto"]} ldap_search_fields: "User": "%u" "Name": "givenName" "Family Name": "sn" "Email": "mail" ldap_search_reported: "Full Name": "FN" "Email": "EMAIL" ## ## Enable modules with custom options in a specific virtual host ## ## host_config: ## "localhost": ## modules: ## mod_echo: ## host: "mirror.localhost" ## ## Enable modules management via ejabberdctl for installation and ## uninstallation of public/private contributed modules ## (enabled by default) ## allow_contrib_modules: true ###. ###' ### Local Variables: ### mode: yaml ### End: ### vim: set filetype=yaml tabstop=8 foldmarker=###',###. foldmethod=marker:
OpenProjects API v3 Create Bug in c#
- Details
The approach here is to pass javascript object to a json call on your local website domain then the web services relays the request to the open projects server
change out:
project_to_add_to -- to you project
10.10.1.3 -- to your OpenProjects Web Server
basically you should be able to go to the baseAddress URL and see a json of all the work packages
Client Side Javascript
var userOpRequest = {username : '',userId : 0, subject :'', content : '', requestType : 7 };
//bind the form
userOpRequest.subject = $("#opSubject").val();
//etc..
var s = encodeURIComponent(JSON.stringify(userOpRequest ));
$.getJSON("OPWebService.asmx/fileBug?s=" + s, function (data) {
});
C# Web Service Code
using System.Text; using System.Net; using System.Web.Script.Services; using System.Web.Services; using System; using System.Collections.Generic; public class OPWebService : System.Web.Services.WebService { [WebMethod(EnableSession = false)] [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)] public void fileBug(string s) { user_openproject_request openprojectsRequest = JsonConvert.DeserializeObject(s); string WorkPackageSubject = openprojectsRequest.subject; string WorkPackageDetails = openprojectsRequest.content; string TypeId = openprojectsRequest.requestType.ToString() ; string TypeName = openprojectsRequest.getTypeName() ; string ParentId = "9999"; string ParentTitle = "Tile of parent";
//this next line is one line if your copying from web
string bugJson = "{ \"subject\": \""+ WorkPackageSubject + "\",\"description\": {\"format\": \"textile\",\"raw\": \""+ WorkPackageDetails + "\" }, \"_links\": {\"type\": { \"href\": \"/api/v3/types/" + TypeId + "\",\"title\": \"" + TypeName + "\" },\"status\": { \"href\": \"/api/v3/statuses/1\"}, \"priority\": {\"href\": \"/api/v3/priorities/8\",\"title\": \"Normal\" }, \"parent\":{\"href\":\"/api/v3/work_packages/"+ParentId+ "\",\"title\":\"" + ParentTitle + "\"} }}";//,\"assignee\": {\"href\": \"/api/v3/users/3\"}
//start web connection var baseAddress = "http://10.10.1.5/api/v3/projects/project_to_add_to/work_packages/"; var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress)); string userName = "apikey"; string apiKey = "YOUR KEY"; // YourOpenProjectServer/my/access_token var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(userName + ":" + apiKey); string userCreds = System.Convert.ToBase64String(plainTextBytes); http.Headers.Add("Authorization: Basic " + userCreds); http.Accept = "application/json"; http.ContentType = "application/json"; http.Method = "POST"; string parsedContent = bugJson; ASCIIEncoding encoding = new ASCIIEncoding(); Byte[] bytes = encoding.GetBytes(parsedContent); Stream newStream = http.GetRequestStream(); newStream.Write(bytes, 0, bytes.Length); newStream.Close(); System.Net.WebResponse response; var content = ""; try { response = http.GetResponse(); var stream = response.GetResponseStream(); var sr = new StreamReader(stream); content = sr.ReadToEnd(); }catch { } Context.Response.Clear(); Context.Response.ContentType = "application/json"; Context.Response.Write(content); } }//end web serverice class public class user_openproject_request { public string username = ""; public int userId = 0; public string subject = ""; public string content = ""; public int requestType = 7; public string urlOn = ""; public string userURL = ""; public string getTypeName() { string retVal = "Bug"; if(requestType == 4) { retVal = "Feature"; } if (requestType == 1) { retVal = "Task"; } return retVal; } }
ArcGis - How to export a lot of pdf from layer and data source combos
- Details
First we have in ArcGIS client a bunch of layers that are called District_1, District_2,District_x,etc. These are File Geodatabase feature classes with geometry type Polygon.
Basically it's the poly that defines a border for a Congressional District.
We have a database table called Health Center Clinics, which has longitude, latitude, the district in which they fall in, name, parent Health Center Name, and misc information.
We want to: show the district poly, all the health center clinics within that district, change the text label in the pdf, and set the name of the pdf.
Desired Outcome: show poly for district 1, include all health centers clinics, change the name to show the Congress persons name, Make a legend show the Health Center parent.
import arcpy def PDFIt(dist): tname = "Unrepresented" tdis = dist fname = "Congressional District " + dist + " - Unrepresented"; rows = arcpy.SearchCursor("Health Center Clinics",fields="us_house_rep;us_house_number") for row in rows: if row.getValue("us_house_number") == tdis: tname = "The Honorable " + row.getValue("us_house_rep") + '\n' + "Congressional District " + row.getValue("us_house_number") tempname = row.getValue("us_house_rep").replace(" ","_") tempname = tempname.replace(".","") tempname = tempname.replace(".","") tempname = tempname.replace("(D)","") tempname = tempname.replace("(R)","") tempname = str(tempname.encode("utf-8").replace("é","e").replace("í","i").replace("á","a")) tempname = str(tempname.encode("utf-8").replace("'","")) tempname = tempname.replace("__","_") fname = row.getValue("us_house_number") + "_mapc_" + tempname + ".pdf" print tname print fname mxd = arcpy.mapping.MapDocument("CURRENT") titleItem = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "*")[0] titleItem.text = tname df = arcpy.mapping.ListDataFrames(mxd)[0] lyr = arcpy.mapping.ListLayers(mxd, 'District_' + tdis, df)[0] ext = lyr.getExtent() df.extent = ext lyr.visible = True lyrm = arcpy.mapping.ListLayers(mxd, 'Health Center Clinics', df)[0] lyrm.visible = True lyrm.definitionQuery= "[is_advocacy]='1' and [status] in ('Active','Reportable') and [us_house_number]='" + dist + "'" arcpy.mapping.ExportToPDF(mxd, "D:\\dlfs\\us_congress_clinic_sitename\\" + fname) lyr.visible = False lyrm.definitionQuery= "[is_advocacy]='1'and [status] in ('Active','Reportable')" for x in range(1, 37): PDFIt(str(x))
Page 2 of 40