čtvrtek 25. dubna 2019

When azure runbook cannot connect to Exchange server through hybrid worker

This is typical SAAS (read S*it as a service). Imagine, you have simple powershell runbook script which is trying to connect to Exchange server from hybrid worker:

$Credentials = Get-AutomationPSCredential -Name 'an_onprem_acount'
$exchOnPremURL = "https://exchangeserver.local/PowerShell/"
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $exchOnPremURL `
-Credential $Credentials -Authentication Basic -AllowRedirection
Import-PSSession -Session $Session -DisableNameChecking:$true -AllowClobber:$true

You can experience tons of different results except one you would expect.... working runbook :) Depends on your settings for hybrid worker, e.g. which account you are using to run the worker you can most probably see, that your runbook is constantly Queued or it is keep restarting itself until it is suspended.

Using google you can find few "solutions" and crazy workarounds like this, however, the solution is easy. You just need to send output of Import-PSSession command to/dev/null ... sorry, Out-Null:

$Credentials = Get-AutomationPSCredential -Name 'an_onprem_acount'
$exchOnPremURL = "https://exchangeserver.local/PowerShell/"
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $exchOnPremURL `
-Credential $Credentials -Authentication Basic -AllowRedirection
Import-PSSession -Session $Session -DisableNameChecking:$true -AllowClobber:$true | Out-Null

strange... right? but no one who works with MS products is not surprised....

Thank you to Bogdan G. S. and Lubomir H.

úterý 1. srpna 2017

Exchange 2016 installation - [ERROR] Installing product E:\exchangeserver.msi failed. Fatal error during installation. Error code is 1603.

If you reached this page, you most probably know, that Exchange is piece of crap. Now, you cannot complete installation. Also, you are not able uninstall this s**t, becuse installation is not completed. Simply Microsoft fun.

You also most probably found following useless links:
http://msexchangeguru.com/2017/02/09/e2016-error1603-unresolved/
https://support.microsoft.com/en-us/help/834484/you-receive-an-error-1603-a-fatal-error-occurred-during-installation-e

Ok, so there is what helped to me:

Problem

Exchange installer disables services in one of the first steps and it tries to start them. Stupid, right? You can confirm it by checking startup type of exchange services once the installer fails. Id they are disabled, following can help.

Solution

1. Prepare command to set all the MS Exchange services to automatic startup type. Include also FMS, HostControllerService, winmgmt, remoteregistry, w3svc and iisadmin services. An example:

Get-Service -name MSExchangeDelivery, MSExchangeRepl,MSExchangeRPC,MSExchangeFastSearch, MSExchangeThrottling, wsbexchange,MSExchangeSubmission, MSExchangeMailboxReplication, MSExchangeMailboxAssistants, MSExchangeIMAP4BE, MSExchangeImap4, MSExchangeIS, MSExchangeDagMgmt, MSExchangeDiagnostics, MSExchangeFrontEndTransport, MSExchangeADTopology, MSExchangeAntispamUpdate, MSExchangeUM, MSExchangeEdgeSync, MSExchangeHM, MSExchangeHMRecovery, MSExchangeServiceHost, MSExchangeTransport, MSExchangeTransportLogSearch, FMS, HostControllerService, winmgmt, remoteregistry, w3svc, iisadmin | set-service -startuptype automatic

2. Start installer again. During step 2, the services should be already disabled again (if you enabled them). It is exact time to fire your prepared command. 

3. Pray


středa 23. března 2016

GPRS s Arduino a problémy s O2 CZ

Tak jsem dospěl k bastlení GSM modulu k Arduinu (konkrétně SIM800L). Vše probíhalo krásně až na problémy se SIM kartou O2 CZ s tarifem Machine.

Píšu tuhle notičku jen pro ty, co se dostanou do stejného začarovaného kruhu, kdy všechno funguje, jen veškeré GPRS requesty skončí timoutem (Týká se to i zjišťování GSM lokace).

AT+HTTPACTION=0

vrátí sice OK, ale výsledkem je buď +HTTPACTION 601 Network error a nebo timeout.

Pro GSM lokalizaci:

AT+CIPGSMLOC=1,1

Pak error 603 nebo 601 dle nálady.

Řešení:


  1. O2 CZ nemá jen jeden APN, má jich několik a pro machine tarify je údajně určen APN Telemetry1 (nicméně, ten také nefunguje, viz řešení 2)
  2. Pokud ani Telemetry1 nefunguje, pak se musíte obrátit na podporu O2 a ti milostivě zařídí, že vaše sim může komunikovat s APN "internet", kde už vše běhá jak má.

Ostatní APN:  Internet, Oneport, Cma, Telemetry, Telemetry 1

Ukázkové komunikace:

Špatné APN:
  • ---> AT+CIPSHUT
  • <--- SHUT OK
  • ---> AT+CGATT=1
  • <--- OK
  • ---> AT+SAPBR=3,1,"CONTYPE","GPRS"
  • <--- OK
  • ---> AT+SAPBR=3,1,"APN","Cokoliv"
  • <--- OK
  • ---> AT+CSTT="Cokoliv"
  • <--- OK
  • ---> AT+SAPBR=1,1
  • <--- OK
  • ---> AT+CIICR
  • <--- OK
  • ---> AT+CIPGSMLOC=1,1
  • <--- +CIPGSMLOC: 601
Dobré, ale nefunkční APN:
  • ...-začátek je stejný ....
  • ---> AT+SAPBR=3,1,"APN","Telemetry1"
  • <--- OK
  • ---> AT+CSTT="Telemetry1"
  • <--- OK
  • ---> AT+SAPBR=1,1
  • <--- OK
  • ---> AT+CIICR
  • <--- OK
  • ---> AT+CIPGSMLOC=1,1
  • <--- Time out
Funkční APN:
  • ...-začátek je stejný ....
  • ---> AT+SAPBR=3,1,"APN","internet"
  • <--- OK
  • ---> AT+CSTT="internet"
  • <--- OK
  • ---> AT+SAPBR=1,1
  • <--- OK
  • ---> AT+CIICR
  • <--- OK
  • ---> AT+CIPGSMLOC=1,1
  • <--- +CIPGSMLOC: 0,14.4XXXX,50.0XXXXX,2016/03/23,13:14:48

úterý 26. ledna 2016

Why is serial output of my Arduino garbled?

Ugly Arduino output

I spent few hours to solve garbled serial output produced by my Arduino (Uno, Nano, doesn't matter). All of a sudden the serial output looked ugly:


I tried to revert last lines I added to the code. Sometimes it helped, sometimes little bit and there was no one single row which was causing it... However, the solution was very easy. As I was adding code to just testing sketch I didn't care about best programming practices and I wasted whole my RAM memory .... 
Problem is, that pretty all serial communications libraries are using dynamic buffers, which could be pretty demanding. In my case, when I compiled and started the code, just 57 bytes left in the memory. When the communication channel was busy the Arduino simply ran out of memory.

So what I learned? 

Every time you can use F() to store string in program memory, even for just test projects. Other memory saving techniques can be found on google.. :)

use following function to check amount of available memory:

int freeRam() {
  extern int __heap_start,*__brkval;
  int v;
  return (int)&v - (__brkval == 0 ? (int)&__heap_start : (int) __brkval);
}

úterý 8. září 2015

IT Troubles - How to map NFS drive on Windows server

We spent plenty of time to properly mount NFS share on our Windows based servers. We are using NFS for IBM FileViewer and Conversion server for IBM Connections and also for IBM Domino servers. And finally we did it! Anyway, I guess, that following guide is usefull for everyone :)

Preparation:

Procedure:
Create script to map the drives. e.g. mount.ps1
For each drive use following command:
New-PSDrive -Name "X" -PSProvider FileSystem - Root "\\nfs_server_host_or_ip\nfs_path" -Persist

where:
X is mapped drive letter
nfs_server_host_or_ip ... is clear, right?
nfs_path .. is also clear

example:
New-PSDrive -name "G" -PSProvider FileSystem -Root "\\192.168.1.1\nfsvolume" -Persist

Create new scheduled task:
  • For running use SYSTEM account (on General tab, click on "Change User and Group" then click on "Advanced", "Find Now" and select user "SYSTEM" ... Ok, Ok, Ok)


  • As a trigger set "At system startup"
  • Under Action tab run powershell and as a parameter "-file mount.ps1"

And restart Windows server :)

Remarks:
  • All services which are accessing the NFS drive must be running under local system account
  • If you try to execute New-PSDrive manually under an user account, the services above won't be able to access the drive (you must run powershell under system account - download PSTools from http://www.sysinternals.com and start powershell using command: PSExec.exe /SID PowerShell.exe - then it will work)
  • To remove the drives use Remove-PSDrive X command
  • The icons for the drives will have red cross over them... anyway it works! :)




pátek 14. srpna 2015

WebSphere troubles - Could not authenticate user to messaging bus

Problem description:

You are most probably trying to configure kerberos for your cell.
Your application on a server are not started. In SystemOut.log you can find following error messages:

CWSII0205W: The bus ConnectionsBus could not authenticate the user wasadmin.
J2CA0138E: The Message Endpoint activation failed for ActivationSpec jms/connections/search/as (com.ibm.ws.sib.api.jmsra.impl.JmsJcaActivationSpecImpl) and MDB application Search#dboard.search.ejb.jar#IndexTopicMDB due to the following exception: javax.resource.ResourceException:
CWSIV0954E: The authentication exception com.ibm.wsspi.sib.core.exception.SIAuthenticationException:
CWSIP0301E: Unable to authenticate user wasadmin when creating a connection to secure messaging engine ConnectionsBus on bus ConnectionsBus. was thrown while attempting to create a connection on factory com.ibm.ws.sib.processor.impl.MessageProcessor

Solution:

Open your ISC and navigate to Security > Global security and ensure, that you have selected "LTPA" option under Authentication section. WebSphere System Console is switching this option itself when it thinks it is good. And it obviously isn't.


středa 15. července 2015

Včelařská váha, díl 5a. Oprava

Menší oprava

Ztráta 4 kilogramů nebyla způsobena rojením včel, jak jsme se zcela mylně domnívali, nýbržto odebráním jedné cihly, která zatěžovala víko úlu.
Graf vývoje očištěný o tuto externalitu pak vypadá takto:

Stále je jasné, že po prvních týdnech flákání včelám došlo, že zima se přece jenom blíží. Co na tom, že o vše přijdou :)

pondělí 6. července 2015

Včelařská váha, díl 5. První snůšky

Snůšky

Tak se vše nakonec podařilo. Nevýkonný úl nastřádal 4kg medu, aby jsme jim ho mohli sebrat. Od té doby jede na plný výkon, jak je ostatně vidět z grafu.


Kontrolní váha

Kontrolní váha se ovšem chová nějak podivně. Do 26 června vypadá chování normálně. Ve 14:40 došlo k vybítí baterie. Po novém spuštění již byla hmotnost o 4 kg nižšší. Od té doby to vypadá, že vždy v 8:00 dojde na kbelíku s pískem k velké párty. 3 července jsem váhu vytaroval. Při zoomu je vidět pěkná závislost senzorů na teplotě, nicméně párty se stále opakuje. 
Zkusím zjistit co se děje a podělím se o výsledky. Pokud na to přijdu :)

pondělí 22. června 2015

Včelařská váha. Díl 4. - První zklamání :)

Lenost...

Jak jsem slíbil v minulém díle, tak přináším výsledky prvního měření. Bohužel, všechny výsledky jsou silně ovlivněny dvěma faktory:
1) Líný a nespolehlivý včelař
2) Líné a nespolehlivé včelstvo.

Celá váha byla v neděli za jásotu davů uvedena do provozu a i přes proškolení obsluhy a přítomnému solárnímu panelu došlo v pondělí večer k vybití baterie. Takže nic. Další data jsou posbírána z období po zásahu technické podpory (dobití baterie) t.j. od čtvrtka do neděle večer. 
Jediné, co se dá z grafu vyčíst je, že včely pracují přes den s přestávkami každé zhruba dvě hodiny :)


Vždy přes den jsou zřetelné výrazné fluktuace ve váze úlu. Svou roli také možná hrálo proměnlivé počasí, ale o tom možná někdy příště. Nicméně dělat závěry z takto malého vzorku dat se opravdu nedá. Vypadá to, jako by včely zásoby spíše zmenšovali. A i to je klidně možné, neboť se jedná o nejméně výkonné včelstvo. Obsluha úlu již přislíbila výměnu matky za výkonější model :)

A teplota....

Co je zajímavější a snad i potvrditelné, je závislost snímačů na teplotě. Ta se zdá býti negativní, t.j. čím nižšší teplota, tím vyšší (naměřená) hmotnost. Z dlouhodobějšího pozorování zkusíme odvodit nějaký účinný koeficient.
Vše je +- vidět na následujícím grafu:
 - modrá - pravá osa: teplota
 - oranžová je zátěž 14Kg, nicméně tarována jako nula. Vzhledem k absenic dat za skoro celý týden netuším, jestli se k -700g dostal postupně (driftem) nebo nějakým vnějším zásahem. Příště to vynuluji znova.

Nicméně i tak je vidět, že fluktuace se zatím vejde do 5% odchylky. Po stanovení vlivu teplot by se dala snad snížit na nějakou rozumnou hodnotu. Budu také muset zjistit, zda se fluktuace nezvětší s vyšší zátěži.



úterý 16. června 2015

Včelařská váha. Díl 3. - Mechanika

Mechanické provedení a instalace

Tuhle část vynechají lidé, kteří jsou citliví na licování spojů, kvalitu materiálů a design :)
Je to jen prototyp. 

Mechanické provedení je jednoduché. V podstatě šlo jen o to, umístit snímače do rohů úlu a zamezit jejich posunutí. Problém je, že celý snímač musí stát jen na přesně dané obdélníkové základně po okrajích snímače. Střed musí mít prostor několik milimetrů pro deformaci, takže je nelze jen tak položit na nějaký materiál.
Jako podložka posloužila plastová deska s rozměry podstavy úlu. V rozích jsou umístěny snímače podložené jakousi plastovou podložkou z Bauhausu s dostatečným otvorem uprostřed. Nahoru pak přišla ještě jedna plastová deska a bylo hotovo.



Celá váha se zasunula za zvýšeného bzukotu pod úl. Pak už jen proběhlo připojení elektroniky, solárního panelu a kontrolní váhy. Posledně jmenované ani nebudu ukazovat :) ... Kontrolní zátěž tvoří kbelík se 14Kg mokrého písku. Samozřejmě zavřený, by se voda neodpařovala a neovlivňovala tak měření.



O víkendu stáhnu data a už se těším na první hodnoty. :)


pátek 12. června 2015

Včelařská váha. Díl 2. - Hardware

Dneskaněco málo k použitému hardware.

Tenzometrické snímače

Základem jsou tenzometrické snímače nakoupené v Číně. Hledejte na ebay.com výraz "Scale Weight Sensor 50kg".

Senzory se zapojují do tzv. Wheatsonova můstku. Nejlepších výsledků lze dosáhnout zapojení č do plného můstku. Lze také najít zapojení s jedním (čtvrtmůstek) nebo dvěmi snímačí (půlmůstek). Zbytek obvodu je pak třeba doplnit přesnými rezistory.
Zapojenní čtyř snímačů do plného můstku je na obrázku níže. Tím také zvýšíte maximální únostnost váhy na 200kg. (U mých snímačů nebyl bílý, ale modrtý drát)

Zesilovač signálu a AD převodník

Jelikož změny napětí dosažené na můstku zatížením snímačů dosahují jednotek mV je třeba signál zesílit a pak převést do digitální podoby. Na to existuje několik specializovaných IO. Já použil HX711 (Avia Semiconductor- datasheet). Ten se opět na ebayi prodává již zapájený na desce s několika potřebnými součástkami za pár kaček.
Zapojení je jednoduché. Vývody E (excitation - buzení) připojíte na E piny modulu. Vývody S na A nebo na B. Lepší je A kanál, neboť ten defaultně používá nejvyšší citlivost. B kanál zvládne jen měření na nejmenší citlivost.
Propojení s procesorem obstarávají dva digitální piny: DT (Data Out) a SCK (Synchronous clock). Z toho je jasné, že komunikace je sériová a velmi jednoduchá - lze vyčíst z datasheetu. Případně můžete sáhnout po již připravené knihovně.
Zbývá už jen připojit Vcc na +5V a GND na zem.




středa 10. června 2015

Včelařská digitální váha. Díl 1.

Vzhledem k cenám včelařských vah a nedostatkům ostatních kloudných řešení jsem začal pracovat na vlastním řešení.

Výchozí požadavky:
  • Minimální cena
  • Co nejméně mechaniky vzhledem k náročnosti zpracování
Požadované funkce (podle priorit):
  • Vážení při přesnosti alespoň  +-0,5kg
  • Průběžné vážení se záznamem získaných hodnot
  • Dálkový odečet (BT, GSM, WiFi?) 
  • Detekce vyrojení
Problémy k řešení:
  • Využití levných snímačů z ebay: drift při trvalém zatížení, kompenzace teplotních vlivů
  • Ostrovní napájení (solar?)
  • Zjistit, jak vypadá rojení.


Zvolené řešení:

Celá váha je postavena na nejlevnějších tenzometrickych snímačích, které jsem sehnal. Snímače se vloží pod úl do rohů. Signál ze snímačů je zesilován AD převodníkem HX711 a zpracováván mikropočítačem Arduino Nano. Výsledná data seukládájí na SD kartu případně historie za posledních 24 hodin je zobrazitelná na čtyřmístném displayi. Informaci o čase obstarává modul reálného času Maxim DS3231, který je teplotně kompenzován a lze z něj získat údaj o aktuální teplotě.
Prototyp obsluhuje dvě vážící jednotky. Jenda bude vážit skutečný úl a druhá (kalibrační) konstantní zátěž. Kalibrační jednotka by mi měla dát odpověď na otázku jaké problémy mohu očekávat od nejlevnějších dostupný tenzometrických snímačů:

  • Přesnost: Nedělám si iluze, ale zatím to vypadá dobře. Změřené hodnoty se pohybují v rozmezí 300g. Zatím při zátěži 5kg. Uvidím, co s nimi udělá 50kg.
  • Drift: snímače nejsou stavěny na trvalou zátěž. Postupně se deformují a tím vzniká pomalý posun naměřené hodnoty.
  • Teplotní závislost: Snímače jsou kovové, takže změna teploty automaticky vyvolů změnu v materiálu, která se musí projevit v naměřené hodnotě.

Software:
S celým programováním je kříž. Nejsem žádný C++ guru, takže narážím neustále na docela zvláštní chování mého software. Nicméně kód jsem nějak dobastlil a zdá se že to fachá dobře. Takže prozatím to umí:

  • Kalibraci váhy, nastavení tara
  • Vážení každou minutu, plus každých deset minut uložení na SD kartu.
  • Procházení historie za posledních 24 hodin (po hodinách)
  • Uspávání celého zařízení (to bude potřebovat doladit, páč spotřeba je pořád cca 30mA)
  • Dočasné odstavení pro případ manipulace s úlem.

Stav:
Prototyp je hotov. A co víc, funguje! :) O víkendu příjde (snad) instalace v reálném prostředí. Momentálně probíhá test výdrže na baterii. Našel jsem starou a poněkud odvařenou powerbanku (4000mAh). Při průměrné spotřebě 40mA by mohla váha vydržet 100 hodin. Posléze se uvidí, zda můj starý a opět opelichaný, solární panel dokáže přes den baterii dostatečně dobít.

Problémy k řešení:

  • Z neznámého důvodu se po probuzení procesoru smažou veškerá data z instancí tříd. Nemůžu tedy využít OOP a musím zůstat u klasického procedurálního programování. Zatím žádný problém, ale štve mě to :(
  • Čtečka SD karet se občas zakousne - zkusit vymyslet automatický restart


Kolik to zatím stálo?

Materiál.

Pomalu všechen materiál jsem nakoupil na ebay:

  • 1x Řídící počítač Arduino Nano = 150Kč
  • 1x Modul reálného času RTC DS3231  = 39Kč
  • 2x Zasilovač signálu ze senzorů HX711 = 62Kč
  • 8x Tenzometrický snímač 50Kg = 318Kč
  • 1x Modul čtečky SD karet = 25Kč
  • 1x Klávesnice 4 tlačítka = 60Kč


Další kravinky jako displaye, konektory, krabička jsou z Čech, t.j. nepoměrně dražšší. cca 500kč

Dohromady jsme na ceně okolo 1100Kč. Nicméně váha dokáže vážit dva úly. Při použití výkonějšího procesoru Atmel ATmega1280 a mírné úpravě software bude možné přípojít až 20 dalších vah. Každá znich pak předtavuje 4 tenzometrické snímače a jeden zesilovač HX711 plus nějaké ty kabely a konektory (t.j. cca 200Kč).